import bcrypt
import getpass

def generate_bcrypt_hash():
    # 获取用户输入
    data = getpass.getpass("请输入需要加密的数据 (输入时不会显示): ")
    salt_rounds = int(input("请输入计算强度值 (推荐值 10-12): "))
    
    # 生成salt
    salt = bcrypt.gensalt(rounds=salt_rounds)
    
    # 生成哈希
    hashed = bcrypt.hashpw(data.encode(), salt)
    
    return hashed.decode()

if __name__ == "__main__":
    print("\n安全哈希生成器 (使用 bcrypt)")
    print("=" * 40)
    
    while True:
        try:
            result = generate_bcrypt_hash()
            print("\n生成的加密字符串:")
            print("=" * 40)
            print(result)
            print("=" * 40)
            
            # 提供复制选项
            if input("\n是否复制到剪贴板? (y/n): ").lower() == 'y':
                import pyperclip
                pyperclip.copy(result)
                print("✓ 已复制到剪贴板!")
                
            # 继续提示
            if input("\n生成另一个哈希? (y/n): ").lower() != 'y':
                print("程序已结束")
                break
                
        except ValueError:
            print("错误: 计算强度值必须是整数!")
        except Exception as e:
            print(f"发生错误: {str(e)}")